Visual C++ 程序设计题库及答案
1. 结合开发经验,阐述总结传统的过程式编程模式的特性。
(1)在一个main函数中调用其他函数来完成各种各样的功能
(2)采用顺序的、关联的、过程驱动的程序设计方法一个程序是一系列预定好的操作序列的组合,它具有一定的开头、中间过程和结果
(3)程序直接控制程序事件和过程的顺序
(4)面向程序而不是面向用户,交互性差,用户界面不友好
2. 结合开发经验,解释何为文档与视图 。
文档
(1)文档是一种数据源,数据源最常见的是磁盘文件
(2)负责将数据保存到永久存储介质中,最常见的是保存到磁盘或数据库(串行化)
视图
(1)视图是数据的用户窗口,为用户提供了文档的可视数据显示
(2)视图给用户提供与文档中数据交互的界面
(3)一个文档会有一个或多个视图显示
(4)视图可以直接访问文档类中的这些成员变量,并通过这种方式来显示和更新数据
3. 结合开发经验,总结 MFC类库中窗口类主要包括哪些下属类。
(1)窗口类 CWnd(所有窗口类的基类)
(2)框架窗口类
(3)视图类
(4)对话框类
(5)控件类
(6)控件栏类
(6)属性页类
4. 在WINDOWS中, 控件分为哪三类?各包含哪些
(1)Windows常用控件
- 文本控件
- 编辑框控件
- 按钮控件
- 复选框控件
- 列表框控件
- 组合框控件
(2)ActiveX控件
- 列表视图控件
- 树视图控件
(3)其他MFC类库所支持的控件类
- BitmapButton类——位图按钮
- CCheckListBox类——复选列表框
- CDragListBox类——拖放列表框
- CProgressCtr类——进度条类
- CSliderCtr类——滑块控件类
- CToolBar类——工具栏类
- CStatusBar类——状态栏类
5. 开发经验,阐述创建控件的方法一般有哪二种。
(1)利用对话框资源编辑器向对话框添加控件
利用对话框编辑器,通过交互操作向对话框中添加控件,然后通过控件的ID值与程序相连,实现调用。步骤如下:
- 打开对话框资源编辑器,利用控件工具栏可视化地向对话框模板中添加控件
- 构造对话框对象
- 调用此对象的 Create() 成员函数或 DoModal() 成员函数,系统将自动创建相应的控件,并将其放入对话框窗口中。
(2)手动添加控件
用户能够向框架窗口或对话框中添加所需的控件,这种方法的灵活性很大。步骤如下。
- 在框架窗口类或对话框类的声明文件中构造一个控件对象。
- 调用该控件类的 Create 函数,真正地创建控件。当用户向框架窗口中添加控件时,应当在该框架窗口的 OnCreate() 成员函数中调用控件的 Create 函数;而当用户向对话框中添加控件时,则应当在该对话框类的 OnInitDialog() 成员函数中调用控件的 Create 函数。
6. MFC类库提供 CEdit 类来管理文本编辑框控件,请列举 CEdit 类的常用函数有哪些,并提供简要说明
- Create——创建一个CEdit控件
- SetReadOnly——设置文本为只读格式,不能编辑文本
- SetSel ——选择编辑框中的文本范围
- GetSel——获取用户在文本中的选择
- GetLine——获取控件中的一行文本
- GetLineCount——获取多行文本控件的文本行数
- LimitText——限制文本长度
- Clear——清楚选定的文本
7. MFC 类库提供 CListBox 类来管理列表框控件,请列举 CListBox 类的常用函数有哪些,并提供简要说明
- Create——创建一个CListBox控件
- GetCount——获取列表框中的项目数
- GetCurSel——获取列表框中选中项目的索引,从0开始
- SetCurSel——选定列表框中的一个项目
- AddString——向列表框中添加一个字符串
- InsertString——在指定索引处插入一个字符串
- DeleteString——删除列表框框控件的一个字符串
- SelectString——从列表框控件中寻找字符串,如果找到,则该字符串被选中
- ResetContent——删除列表框控件中的所有字符串
- GetLBText——获取列表框中选择的字符串
8. MFC 类库提供 CComboBox 类来管理列表框控件,请列举 CComboBox 类的常用函数有哪些,并提供简要说明
- Create——创建一个CComboBox控件
- GetCount——获取组合框中的项目数
- GetCurSel——获取组合框中选中项目的索引,从0开始
- SetCurSel——选定组合框中的一个项目
- AddString——向组合框中添加一个字符串
- InsertString——在指定索引处插入一个字符串
- DeleteString——删除组合框控件的一个字符串
- SelectString——从列表框控件中寻找字符串,如果找到,则该字符串被选中
- ResetContent——删除列表框控件中的所有字符串
- GetLBText——获取列表框中选择的字符串
9. 结合开发经验,阐述总结文档视图结构的主要优点。
(1)将数据操作和数据显示、用户界面分离开。使模块划分更为合理、模块独立性更强,同时简化了数据操作和数据显示
(2)MFC 在文档/视图结构上提供了许多标准操作界面,包括新建文件、打开文件、保存文件等,减轻了用户的工作量
(3)支持打印预览和电子邮件发送功能
10. 结合开发经验,解释何为事件驱动编程模式 。
(1)以窗口为中心,根据用户的不同操作激活处理相应事件的代码并完成相应的任务
(2)全新的程序设计方法,不由事件的顺序来控制,而是由事件的发生来控制,用户可以用各种合理的顺序来安排程序的流程
(3)面向用户的程序设计方法,它的程序设计过程除了完成所需功能之外,更多地考虑了用户的输入
(4)“被动”式的程序设计方法,程序开始运行时,处于等待用户输入事件状态,然后做出反应,处理完毕后又处于等待状态。
11. 结合开发经验,总结 MFC 主要有哪些特性。
(1)封装了 Windows AP,程序可以在任何时候调⽤ WindowsAPI 函数,最⼤程度的利⽤了Windows.
(2)提供了⼀些通⽤类的⽀持,如列表,数组和映射类的集合、字符串类,时间⽇期类、⽂件访问类等
(3)具有丰富的⽤户界⾯特性⽀持单⽂档视图(SDI)结构、多⽂档视图(MDI)结构、对话框、菜单、常⽤控 件、打印预览和打印
(4)⽀持动态链接库 DLL,使 DLL 的编写越来越简单
(5)⽀持数据库访问。提供了多种数据库开发技术,主要包括 ODBC API,MFC ODBC、DAO、OLE DB 和 ADO
(6)⽀持⽹络通信。使⽤ ISAPI (⽹络服务接⼝)、Windows Socket 以及封装的 Win32 Internet接⼝ ,使⽹ 络通信编程更为轻松。
(7)⽀持 OLE (对象链接和嵌⼊)。⽀持对象嵌⼊、对象链接和⾃动化的 OLE 服务器和容器。
(8)⽀持 ActiveX 控件。可以⽅便地⽣成和使⽤ ActiveX 控件
12. 在 MFC 中,如何自绘标准按钮控件?
(1)为按钮添加 BS_OWNERDRAW属性,并重载虚函数 PreSubClassWindow 和 DrawItem
(2)添加 VM_MOUSELEAVE,WM_MOUSEHOVER 和WM_MOUSEMOVE消息等
(3)实现 VM_MOUSELEAVE 和 WM_MOUSEHOVER消息并调用 InvalidateRect 让按钮重绘
13. 阐述 MFC 开发应用中, MFC 库链接的方式。
(1)静态链接
(2)动态链接
14. 对 Windows 提供的标准控件和公共控件进行解释。
标准控件
利用标准控件可以满足大部分用户界面程序设计的要求
创建方式:
(1)静态创建
静态控件通常不发送消息,其他控件对于用户的操作都能发送消息,且消息类别不同
(2)动态创建
动态控件是指在需要时由Create()创建的控件,动态控件的响应函数只能手动添加,由于动态控件对象是由new生成的,它不会被程序自动释放,所以需手工释放。
公共控件
- 公共控件起到桥梁作用,通过公共控件可以使编写的程序实现和 Windows 系统的无缝结合
- 弥补了传统控件的某些不足
- 实现应用程序用户界面风格的多样性
15. 在使用应用程序向导生成MFC应用程序框架时,除了关于对话框类 CAboutDlg,向导还会生成若干个类,并为每一个类都创建了对应的头文件和实现文件,请逐一解释这些头文件的名称以及各自的作用。
(1)框架窗口类头文件 SDI_Example.h:用于定义框架窗口 CMainFrame
(2)文档类头文件 SDI_ExampleDoc.h:用于定义文档类 CSDI_ExampleDoc
(3)视图类头文件 SDI_ExampleView.h:用于定义视图类 CSDI——ExampleView
(4)应用程序类头文件 SDI_Example.h:用于定义应用类 CSDI_ExampleApp
(5)资源类头文件 Resource.h:资源通过资源标识符加以区别,将项目中所有的资源标识符都放在 Resource.h 中定义
(6)标准包含头文件 Stdafx.h:用于包含一般情况下要用到且不会被修改的头文件
16. 假如有这么一个应用,目的是动态地使一串按钮从左到右显示,以达到流水的效果,请给出详细的核心实现代码。并予以简单的解释说明。
1 | for (int i = 14; i > 1; i--) { |
array
是按钮 ID 的数组,使按钮依次亮起然后熄灭
调用GetDlgItem(array[i]->ShowWindow(true));
从而调用onpaint
函数进行一次窗口重绘,同时紧跟调用UpdateWindow();
让onpaint
函数立即进行重绘
17. 在控件属性对话框的常规属性中,有哪些控件共同的属性?
- ID——控件的标识符
- Caption——文字说明
- Visible——是否可见
- Tabstop——用户可以用Tab移动到具有该属性的控件上
- Group——指定一组控件
- Help ID——帮助标识符
- Client edge——增加一个凹陷的边界
- Static edge——增加一个边界
- Modal frame——增加一个三维的框架
- Transparent——是否透明
- Accept files——可以接受拖放文件
- No parent notify——不向其父窗口发松
- WM_PARENTNOTIFY消息
- Right aligned text——文本对齐
18. 结合开发经验,阐述在 Visual C++ 中的数据库访问技术中 ODBC 的层次结构 。
(1)应用程序(Application)
(2)ODBC 管理器(Administrator)
(3)驱动程序管理器(Driver Manager)
(4)ODBC API
(5)ODBC 驱动程序
(6)数据源(Data Source)
欢迎打赏